#include <unistd.h>
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;

int main( int argc, char *argv[] )
{
	pid_t pid;

	if( ( pid = fork() ) < 0 ) {
		perror( "fork error" );
		exit( 0 );
	}
	else if( pid == 0 ) {
		if( ( pid = fork() ) < 0 ) {
			perror( "fork error" );
			exit( 0 );
		}
		else if( pid > 0 )
			exit( 0 );

		// ... where the second child do something

		sleep( 2 );
		printf( "second child, parent pid = %d\n", getppid() ); // getppid()
		exit( 0 );
	}

	if( waitpid( pid, NULL, 0 ) != pid )
		perror( "waitpid error" );

	// ... where the parent do something

	exit( 0 );
}

// 如果想 fork 一个进程但不要它等待子进程终止，也不想进程处于僵死状态直到父进程终止。 就是像这样调两次 fork
